<?php

require_once ('BaseService.php');

/**
 * @author Virtualidad
 * @version 1.0
 * @created 29-dic-2010 09:57:48 a.m.
 */
class CursosMatriculadosService extends BaseService {

    /**
     *
     * @param CursosMatriculados $Curso
     * @return CursosMatriculados
     */
    function GetById($Curso) {
        $encoder = parent::getSerializer(parent::getMimeType(), "CursosMatriculadosPk");
        $curso = $encoder->serialize($CursoMatriculadoPk);
        $response = parent::invokeService("GetById", $curso);

        Loader::using("models::entities::CursosMatriculados");
        $result = parent::processSingleObjectResponse($response, parent::getMimeType(), "CursosMatriculados", CursosMatriculados::MAPPING());

        return $result;
    }

    function GetByCursoPk($CursoPk) {
        $encoder = parent::getSerializer(parent::getMimeType(), "CursosMatriculadosPk");
        $curso = $encoder->serialize($CursoPk);

        $response = parent::invokeService("GetByCurso", $curso);

        Loader::using("models::entities::CursosMatriculados");
        $result = parent::processArrayResponse($response, parent::getMimeType(), "CursosMatriculados", CursosMatriculados::MAPPING());

        return $result;
    }

    /**
     *
     * @param int $CodigoEstudiante
     * @return <type>
     */
    public function GetByEstudiante($CodigoEstudiante) {
        $response = parent::invokeService("GetByEstudiante", $CodigoEstudiante);
        Loader::using("models::entities::CursosMatriculados");
        $result = parent::processArrayResponse($response, parent::getMimeType(), "CursosMatriculados", CursosMatriculados::MAPPING());

        return $result;
    }

    /**
     *
     * @param int $CodigoEstudiante
     * @param PeriodoAcademico $PeriodoAcademico
     * @return CursosMatriculados
     */
    public function GetByEstudianteAndPeriodoAcademico($CodigoEstudiante,
            $PeriodoAcademico) {
        $encoder = parent::getSerializer(parent::getMimeType(), "PeriodoAcademico");
        $periodo = $encoder->serialize($PeriodoAcademico);
        $data = $encoder->wrapArray(array(
            "CodigoEstudiante" => $CodigoEstudiante,
            "PeriodoAcademico" => $periodo
                ), "GetByEstudianteAndPeriodoAcademico"); //<--A root for potential xml support

        $response = parent::invokeService("GetByEstudianteAndPeriodoAcademico", $data);
        Loader::using("models::entities::CursosMatriculados");
        $result = parent::processArrayResponse($response, parent::getMimeType(), "CursosMatriculados", CursosMatriculados::MAPPING());

        return $result;
    }

    /**
     *
     * @param CursosMatriculados $CursoMatriculado
     * @return ServiceResponse
     */
    public function Create($CursoMatriculado) {
        require_once 'util/ServiceResponse.php';
        $encoder = parent::getSerializer(parent::getMimeType(), "CursosMatriculados");
        $data = $encoder->serialize($CursoMatriculado);
        $response = parent::invokeService("Create", $data);
        
        $result = parent::processSingleObjectResponse($response, parent::getMimeType(), "ServiceResponse");
        
        return $result;
    }

    /**
     *
     * @param CursosMatriculadosPk $CursoMatriculado
     * @return void
     */
    public function SolicitarRetiro(CursosMatriculadosPk $CursoMatriculado) {
        $encoder = parent::getSerializer(parent::getMimeType(), "CursosMatriculadosPk");
        $curso = $encoder->serialize($CursoMatriculadoPk);
        $response = parent::invokeService("SolicitarRetiro", $CursoMatriculado);

        return $response;
    }

    /**
     *
     * @param int $idEstudiante
     * @return <type>
     */
    public function GetAprobados($idEstudiante) {
        $response = parent::invokeService("GetAprobados", $idEstudiante);

        Loader::using("models::entities::CursosMatriculados");
        $result = parent::processArrayResponse($response, parent::getMimeType(), "CursosMatriculados", CursosMatriculados::MAPPING());

        return $result;
    }

    /**
     *
     * @param int $idEstudiante
     * @return <type>
     */
    public function GetNoAprobados() {
        $response = parent::invokeService("GetNoAprobados");

        Loader::using("models::entities::CursosMatriculados");
        $result = parent::processArrayResponse($response, parent::getMimeType(), "CursosMatriculados", CursosMatriculados::MAPPING());

        return $result;
    }

    public function getServiceClass() {
        return "CursosMatriculados";
    }

}

?>